/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

public class NumarRoman implements Visitor {
    
    public String conversieInArab(char[] numar){
        Context.context=null;
        Context context=Context.getContext();
        ExpresieAbstracta expr=new Null();
        
        for(char c:numar){
            switch(c){
                case 'I':expr=new Unu();
                    break;
                case 'V':expr=new Cinci();
                    break;
                case 'X':expr=new Zece();
                    break;
                case 'L':expr=new CinciZeci();
                    break;
                case 'C':expr=new Suta();
                    break;
                case 'D':expr=new CinciSute();
                    break;
                case 'M':expr=new Mie();
                    break;
            }
            expr.interpretor(context);
        }   
        return String.valueOf(context.returneazaFinal());
            
            
            }
    public void visit(ExpresieAbstracta expr){
        ExpresieAbstracta unu=new Unu();
        ExpresieAbstracta cinci=new Cinci();
        ExpresieAbstracta zece=new Zece();
        ExpresieAbstracta cincizeci=new CinciZeci();
        ExpresieAbstracta suta=new Suta();
        ExpresieAbstracta cincisute=new CinciSute();
        ExpresieAbstracta mie=new Mie();
        if(expr==unu)
            unu.acceptVisitor(this);
        if(expr==cinci)
            cinci.acceptVisitor(this);
        if(expr==zece)
            zece.acceptVisitor(this);
        if(expr==cincizeci)
            cincizeci.acceptVisitor(this);
        if(expr==suta)
            suta.acceptVisitor(this);
        if(expr==cincisute)
            cincisute.acceptVisitor(this);
        if(expr==mie)
            mie.acceptVisitor(this);
        
    }
    
}
